昨天提到建立一個AR Session 首先需要的是configuration,
但只有這是不夠的,我們還需要知道目前這個session 的狀態, 這時候我們就需要使用ARSCNViewDelegate所提供的方法了
1. func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) { }
這個方法會在每次session,狀態變化的時後被觸發
2.func session(_ session: ARSession, didFailWithError error: Error) { trackingStatus = "Session Failure: \(error)" }
這個方法會在session發生error時被觸發
3. func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera) { switch camera.trackingState { case .notAvailable: print("Not avaialable") case .normal: print("All Good") case .limited(let reason): switch reason { case .excessiveMotion: print("Limited due to excessive motion") case .insufficientFeatures: print("Limited due to insufficient features") case .initializing: print("Initializing") case .relocalizing: print("Relocalizing") } } }
這個方法可以提供session tracking的state變化
4.func sessionWasInterrupted(_ session: ARSession) { print("Session Was Interrupted!") }
這個方法可以提供可以偵測session被中斷(例如使用者跳到其他APP), 此時適合儲存當前session上的操作
5. func sessionInterruptionEnded(_ session: ARSession) { trackingStatus = "Session Interruption Ended" }
這個方法可以提供可以偵測session從中斷回複, 此時適合重回保存的操作狀態